#ifndef _NETWORK_H_
#define _NETWORK_H_

/* 
    该库是对TCP和UDP的封装:
    1) 封装TCP、UDP的客户端
    2) 封装TCP、UDP的服务端
    3) 封装TCP、UDP的初始化
*/

#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <signal.h>
#include <sys/wait.h>
#include <sys/types.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <netinet/in.h>

// TCP和UDP选择标志符号
#define TCP_FLAG 1 
#define UDP_FLAG 0
// tcp监听最大个数
#define listenMax 5
// 最大接受和发送的缓存容量
#define maxChar 1024
// SER_FLAG:服务端,CLI_FLAG客户端
#define SER_FLAG 1
#define CLI_FLAG 0
// 出错显示调试语句
#define DEBUGERROR printf("\n文件:%s, 错误行:%d\n", __FILE__,(__LINE__-3))

// 服务结构体全局变量
struct sockaddr_in serSockAddr;
socklen_t  serSockAddrLen; 

// 客户端结构体全局,存的是服务器的地址和端口
static struct sockaddr_in cliSockAddr;
static socklen_t  cliSockAddrLen;

typedef unsigned char u8;
typedef unsigned int u32;
typedef struct sockaddr SA;

int socketInit(char* ipAddr, int* port, int setTcpUdpMode, int setSerCidMode);  // TCP、UDP初始化
int socketServer(int* sockfd,  char* bufData, int bufDataSize, int setTcpUdpMode); // TCP、UDP服务端
int socketClient(int* sockfd, char* bufData, int setTcpUdpMode); // TCP、UDP客户端

#endif